
function solution(n, k, data) {
    const list = [];
    for (let i = 0; i < data.length; i++) {
        const price = data[i]

        const yesterday_remain_number = i > 0 ? list[i - 1].today_remain_number : 0

        let pay_number = 0
        if (yesterday_remain_number === 0) {
            pay_number = 1
        }

        const today_remain_number = () => yesterday_remain_number + pay_number

        const coming_days = data.slice(i+1, i + k)
        console.log(i+1, '==========::: ', price, coming_days)

        if (!coming_days.length) {
            if (yesterday_remain_number === 0) {
                pay_number = 1
            } else {
                pay_number = 0
            }
        } else if (Math.min(...coming_days) > price) {
            console.log('--上一天剩余::: ', yesterday_remain_number)
            pay_number = k - yesterday_remain_number // 2-0=2

            const end = data.length - i // 3
            console.log('--还有几天结束::: ', end)
            // 5+7 》= 11
            if (pay_number + yesterday_remain_number >= end) {
                pay_number = end - yesterday_remain_number
                // 11-7=4
                console.log('--买多了----::: ', pay_number)
            }
            console.log('--今天最便宜--购买::: ', pay_number)
        } else if (
            yesterday_remain_number === 0 ||
            Math.min(...coming_days.slice(0, today_remain_number())) > price
        ) {
            // const minIndex = coming_days.indexOf(Math.min(...coming_days)) + 1
            const minIndex = coming_days.findIndex(v => v < price)
            if (minIndex === -1) {
                pay_number = k - yesterday_remain_number
            } else if (today_remain_number() < minIndex + 1) {
                pay_number = minIndex + 1 - yesterday_remain_number
            }

            const end = data.length - i
            if (pay_number + yesterday_remain_number > end + yesterday_remain_number) {
                pay_number = end - yesterday_remain_number
            }
            console.log('-今天要购买::: ', minIndex, pay_number)
        }

        list.push({
            yesterday_remain_number,
            pay_number,
            price,
            total_prices: pay_number * price,
            today_remain_number: today_remain_number() - 1
        });
    }
    console.log('list::: ', list)

    return list.reduce((total, item) => {
        return total + item.total_prices
    }, 0)
}

function main() {
    // 单价2----当天剩余【上一天剩余0 + 需购买7 (花费14) - 1 = 6】
    // 单价20---当天剩余【上一天剩余6 + 需购买0 (花费0)  - 1 = 5】
    // ——————————————总价 【18+18+4=40】
    console.log(solution(19, 12, [15,14,18,1,24,14,21,20,1,23,21,11,8,11,10,
        24,6,18,15]));

    // 单价2----当天剩余【上一天剩余0 + 需购买7 (花费14) - 1 = 6】
    // 单价20---当天剩余【上一天剩余6 + 需购买0 (花费0)  - 1 = 5】
    // ——————————————总价 【18+18+4=40】
    // console.log(solution(18, 7, [2,20,15,21,21,24,10,25,14,14,21,9,11,25,2,23,12,23]));

    // 单价7----当天剩余【上一天剩余0 + 需购买6 (花费42) - 1 = 5】
    // 单价25---当天剩余【上一天剩余5 + 需购买0 (花费0)  - 1 = 4】
    // ——————————————总价 【18+18+4=40】
    // console.log(solution(21, 8, [7,25,20,16,18,7,20,15,9,3,12,3,21,3,6,1,7,11,19,1,2]));

    // 单价6---上一天剩余0--购买3【价18】--当天剩余0+3-1=2,
    // 单价19--上一天剩余2--购买0【价0】---当天剩余2+0-1=1,
    // 单价19--上一天剩余1--购买0【价0】---当天剩余1+0-1=0,
    // 单价3---上一天剩余0--购买6【价18】--当天剩余0+6-1=5,
    // 单价3---上一天剩余5--购买0【价0】---当天剩余5+0-1=4
    // 单价25--上一天剩余4--购买0【价0】--当天剩余4+0-1=3
    // 单价16--上一天剩余3--购买0【价0】--当天剩余3+0-1=2
    // 单价17--上一天剩余2--购买0【价0】--当天剩余2+0-1=1
    // 单价8---上一天剩余1--购买0【价0】--当天剩余1+0-1=0
    // 单价1---上一天剩余0--购买4【价4】--当天剩余0+4-1=3
    // 单价5---上一天剩余3--购买0【价0】--当天剩余3+0-1=2
    // 单价21--上一天剩余2--购买0【价0】--当天剩余2+0-1=1
    // 单价2---上一天剩余1--购买0【价0】--当天剩余1+0-1=0
    // ——————————————总价 【18+18+4=40】
    // console.log(solution(13, 6, [6,19,19,3,3,25,16,17,8,1,5,21,2]) == 40);
    // console.log(solution(13, 6, [6, 19, 19, 3, 3, 25, 16, 17, 8, 1, 5, 21, 2]));

    // 单价1--上一天剩余0--购买2【价2】--当天剩余0+2-1=1,
    // 单价2--上一天剩余1--购买1【价2】--当天剩余1+1-1=1,
    // 单价3--上一天剩余1--购买0【价0】--当天剩余1+0-1=0,
    // 单价3--上一天剩余0--购买1【价3】--当天剩余0+1-1=0,
    // 单价2--上一天剩余0--购买1【价2】--当天剩余0+1-1=0
    // ——————————————总价 【2+2+3+2=9】
    // console.log(solution(5, 2, [1, 2, 3, 3, 2]) === 9);
    console.log(solution(5, 2, [1, 2, 3, 3, 2]));

    // 单价4--上一天剩余0--购买1【价4】--当天剩余0+1-1=0,
    // 单价1--上一天剩余0--购买3【价3】--当天剩余0+3-1=2,
    // 单价5--上一天剩余2--购买0【价0】--当天剩余2+0-1=1,
    // 单价2--上一天剩余1--购买0【价0】--当天剩余1+0-1=0,
    // 单价1--上一天剩余0--购买2【价2】--当天剩余0+2-1=1
    // 单价3--上一天剩余1--购买0【价0】--当天剩余0+1-1=0
    // ——————————————总价 【4+3+2=9】
    // console.log(solution(6, 3, [4, 1, 5, 2, 1, 3]) === 9);
    console.log(solution(6, 3, [4, 1, 5, 2, 1, 3]));

    // 单价3--上一天剩余0--购买1【价3】--当天剩余0+1-1=0,
    // 单价2--上一天剩余0--购买2【价4】--当天剩余0+2-1=1,
    // 单价4--上一天剩余1--购买0【价0】--当天剩余1+0-1=0,
    // 单价1--上一天剩余0--购买1【价1】--当天剩余0+1-1=0
    // ——————————————总价 【3+4+1=8】
    // console.log(solution(4, 1, [3, 2, 4, 1]) === 10);
    console.log(solution(4, 1, [3, 2, 4, 1]));
}

main();
